package com.cskaoyan.javase.oop1._15import.one;

import com.cskaoyan.javase.oop1._15import.another.Teacher;

/**
 * import关键字
 * 编译器在确定使用某个类时,会优先从同包下查找,当使用简单类名时,同包下是不可能有同名类的
 *      所以能找到该类就不会报错,找不到就会编译报错
 *
 * 但是如果想要跨包访问一个类时,不同包下完全允许同名类,这时再使用简单类名就不可以访问了:
 *      因为编译器不知道究竟访问的是哪个包的这个类
 *      所以跨包使用某个类时:
 *          1.要么使用导包语句
 *          语法: import + 类的全限定类名
 *          用于告诉编译器究竟使用哪个包下的这个类
 *          全限定类名可以用idea直接复制.
 *          语法使用位置: 放在package声明下面,类声明的上面
 *              当然,实际开发中,我们都用idea自动导包,不太需要关注位置
 *              但是要注意,不要导错包.
 *          2.使用类时,不要用简单类名,而是用全限定类名
 *              这种方式也是可行的,但是一般尽量不要使用,因为它很长
 *
 *  注意事项:
 *        1.java.lang包下的类都是java的核心类,这些类会存在隐式导入
 *          对于任何java代码而言,都存在它们的隐式导入
 *          程序员无需再写导包语句了
 *
 *        2.如果存在,想要使用同包下和不同包下的两个同名类的场景:
 *          a.这种情况如果发生,尽量先考虑改名字
 *          b.考虑一个用全限定类名,另外一个直接同包使用
 *
 * @since 14:31
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Student s = new Student();
        s.test();

        com.cskaoyan.javase.oop1._15import.another.Student s2 = new com.cskaoyan.javase.oop1._15import.another.Student();
        s2.test();

        com.cskaoyan.javase.oop1._15import.another.Teacher t = new com.cskaoyan.javase.oop1._15import.another.Teacher();
        t.test();

        Teacher t2 = new Teacher();
        t2.test();

        System.out.println("Hello world!!");
    }
}
